home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / usr_-_Usr_Files / INCLUDE / LIBELF.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  4KB  |  160 lines

  1. #ifndef _LIBELF_H
  2. #define    _LIBELF_H
  3.  
  4. #include <features.h>
  5. #include <sys/types.h>
  6. #include <elf.h>
  7.  
  8. __BEGIN_DECLS
  9.  
  10. /* commands */
  11. typedef enum 
  12. {
  13.   ELF_C_NULL = 0,    /* must be first, 0 */
  14.   ELF_C_READ,
  15.   ELF_C_WRITE,
  16.   ELF_C_CLR,
  17.   ELF_C_SET,
  18.   ELF_C_FDDONE,
  19.   ELF_C_FDREAD,
  20.   ELF_C_RDWR,
  21.   ELF_C_NUM        /* must be last */
  22. } Elf_Cmd;
  23.  
  24.  
  25. /* flags */
  26. #define    ELF_F_DIRTY    0x1
  27. #define    ELF_F_LAYOUT    0x4
  28.  
  29.  
  30. /* file types */
  31. typedef enum
  32. {
  33.   ELF_K_NONE = 0,    /* must be first, 0 */
  34.   ELF_K_AR,
  35.   ELF_K_COFF,
  36.   ELF_K_ELF,
  37.   ELF_K_NUM        /* must be last */
  38. } Elf_Kind;
  39.  
  40.  
  41. /* translation types */
  42. typedef enum
  43. {
  44.   ELF_T_BYTE = 0,    /* must be first, 0 */
  45.   ELF_T_ADDR,
  46.   ELF_T_DYN,
  47.   ELF_T_EHDR,
  48.   ELF_T_HALF,
  49.   ELF_T_OFF,
  50.   ELF_T_PHDR,
  51.   ELF_T_RELA,
  52.   ELF_T_REL,
  53.   ELF_T_SHDR,
  54.   ELF_T_SWORD,
  55.   ELF_T_SYM,
  56.   ELF_T_WORD,
  57.   ELF_T_NUM        /* must be last */
  58. } Elf_Type;
  59.  
  60.  
  61. /* Those are always used as pointers. They are never defined anywhere,
  62.  * but the libelf source code.
  63.  */
  64. typedef struct Elf    Elf;
  65. typedef struct Elf_Scn    Elf_Scn;
  66.  
  67.  
  68. /* archive member header */
  69. typedef struct
  70. {
  71.   char        *ar_name;
  72.   time_t    ar_date;
  73.   long        ar_uid;
  74.   long         ar_gid;
  75.   unsigned long    ar_mode;
  76.   off_t        ar_size;
  77.   char         *ar_rawname;
  78. } Elf_Arhdr;
  79.  
  80.  
  81. /* archive symbol table */
  82.  
  83. typedef struct
  84. {
  85.   char        *as_name;
  86.   size_t    as_off;
  87.   unsigned long    as_hash;
  88. } Elf_Arsym;
  89.  
  90.  
  91. typedef void    Elf_Void;
  92.  
  93. /* data descriptor */
  94. typedef struct
  95. {
  96.   Elf_Void    *d_buf;
  97.   Elf_Type    d_type;
  98.   size_t    d_size;
  99.   off_t        d_off;        /* offset into section */
  100.   size_t    d_align;    /* alignment in section */
  101.   unsigned    d_version;    /* elf version */
  102. } Elf_Data;
  103.  
  104.  
  105. /*function declarations */
  106.  
  107. extern Elf *elf_begin __P((int __fds, Elf_Cmd __cmd, Elf * __ref));
  108. extern int elf_cntl __P((Elf * ___elfds, Elf_Cmd __cmd));
  109. extern int elf_end __P((Elf * __elfds));
  110. extern __const char *elf_errmsg    __P((int __errno));
  111. extern int elf_errno __P((void));
  112. extern void elf_fill __P((int __fillchar));
  113. extern unsigned int elf_flagdata __P((Elf_Data * __data, Elf_Cmd __cmd,
  114.     unsigned int __flags));
  115. extern unsigned    int elf_flagehdr __P((Elf * __elfds, Elf_Cmd __cmd,
  116.     unsigned int __flags));
  117. extern unsigned    int elf_flagelf __P((Elf * __elfds, Elf_Cmd __cmd,
  118.     unsigned int __flags));
  119. extern unsigned    int elf_flagphdr __P((Elf * __elfds, Elf_Cmd __cmd,
  120.     unsigned int __flags));
  121. extern unsigned    int elf_flagscn __P((Elf_Scn * __scn, Elf_Cmd __cmd,
  122.     unsigned int __flags));
  123. extern unsigned    int elf_flagshdr __P((Elf_Scn * __scn, Elf_Cmd __cmd,
  124.     unsigned int __flags));
  125. extern size_t elf32_fsize __P((Elf_Type __type, size_t __count,
  126.     unsigned int __ver));
  127. extern Elf_Arhdr *elf_getarhdr __P((Elf * __elfds));
  128. extern Elf_Arsym *elf_getarsym __P((Elf * __elfds, size_t * __ptr));
  129. extern off_t elf_getbase __P((Elf * __elfds));
  130. extern Elf_Data *elf_getdata __P((Elf_Scn * __scn, Elf_Data * __data));
  131. extern Elf32_Ehdr *elf32_getehdr __P((Elf * __elfds));
  132. extern char *elf_getident __P((Elf * __elfds, size_t * __ptr));
  133. extern Elf32_Phdr *elf32_getphdr __P((Elf *__elfds));
  134. extern Elf_Scn *elf_getscn __P((Elf *__elfds, size_t __index));
  135. extern Elf32_Shdr *elf32_getshdr __P((Elf_Scn * __scn));
  136. extern unsigned long elf_hash __P((__const char * __name));
  137. extern Elf_Kind    elf_kind __P((Elf *__elfds));
  138. extern size_t elf_ndxscn __P((Elf_Scn *__scn));
  139. extern Elf_Data    *elf_newdata __P((Elf_Scn * __scn));
  140. extern Elf32_Ehdr *elf32_newehdr __P((Elf * __elfds));
  141. extern Elf32_Phdr *elf32_newphdr __P((Elf * __elfds, size_t __count));
  142. extern Elf_Scn *elf_newscn __P((Elf * __elfds));
  143. extern Elf_Scn *elf_nextscn __P((Elf * __elfds, Elf_Scn * __scn));
  144. extern Elf_Cmd elf_next __P((Elf * __elfds));
  145. extern size_t elf_rand __P((Elf * __elfds, size_t __offset));
  146. extern Elf_Data *elf_rawdata __P((Elf_Scn * __scn, Elf_Data * __data));
  147. extern char *elf_rawfile __P((Elf * __elfds, size_t * __ptr));
  148. extern char *elf_strptr __P((Elf * __elfds, size_t __section,
  149.     size_t ___offset));
  150. extern off_t elf_update __P((Elf * __elfds, Elf_Cmd __cmd));
  151. extern unsigned    int elf_version __P((unsigned int __ver));
  152. extern Elf_Data *elf32_xlatetof __P((Elf_Data * __dst,
  153.     __const Elf_Data * __src, unsigned int __encode));
  154. extern Elf_Data *elf32_xlatetom __P((Elf_Data * __dst,
  155.     __const Elf_Data * __src, unsigned int __encode));
  156.  
  157. __END_DECLS
  158.  
  159. #endif    /* _LIBELF_H */
  160.